package gson.gson.Interface;

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;

import java.lang.reflect.Type;

/**
 * 自定义实现 JsonSerializationContext 接口
 */
public class CustomJsonSerializationContext implements JsonSerializationContext {

    /**
     * 实现 serialize(Object src) 方法，将对象转换为 JSON。
     */
    @Override
    public JsonElement serialize(Object src) {
        if (src == null) {
            return null;
        }
        // 创建 JsonObject 并手动添加字段
        JsonObject jsonObject = new JsonObject();
        jsonObject.addProperty("toString", src.toString());
        jsonObject.addProperty("hashCode", src.hashCode());
        return jsonObject;
    }

    /**
     * 实现 serialize(Object src, Type typeOfSrc) 方法，支持指定类型的序列化。
     */
    @Override
    public JsonElement serialize(Object src, Type typeOfSrc) {
        if (src == null) {
            return null;
        }
        // 直接调用 serialize(Object src)
        return serialize(src);
    }
}
